package cn.lingyangwl.agile.food.model.entity;

import cn.lingyangwl.agile.model.BasePO;
import cn.lingyangwl.agile.tenant.core.DataIsolation;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 库存单据明细
 *
 * @author shenguangyang
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("food_stock_document_detail")
@DataIsolation(filterMainTenant = true, filterTenant = true, tableName = "food_stock_document_detail")
public class StockDocumentDetail extends BasePO {
    @TableId
	private Long id;
	
	/**
	 * 库存单据记录id
	 */
	private Long documentId;
	
	/**
	 * 商品sku id
	 */
	private Long goodsSkuId;

	/**
	 * 商品 sku 编号
	 */
	private String goodsSkuNo;

	/**
	 * 商品单位
	 */
	private String goodsUnit;

	/**
	 * 商品id
	 */
	private Long goodsId;

	/**
	 * 商品价格
	 */
	private BigDecimal goodsPrice;

	/**
	 * 商品备注
	 */
	private String goodsRemark;

	/**
	 * 商品sku规格信息
	 * @see GoodsSku#setSpecData(List) 
	 */
	private String goodsSkuSpec;

	/**
	 * 现库存
	 */
	private BigDecimal afterStock;

	/**
	 * 原门店库存
	 */
	private BigDecimal beforeStoreStock;

	/**
	 * 现门店库存
	 */
	private BigDecimal afterStoreStock;

	/**
	 * 成本单价
	 */
	private BigDecimal costPrice;

	/**
	 * 总成本价
	 */
	private BigDecimal totalCostPrice;

	/**
	 * 操作人id
	 */
	private Long operaterId;
	
	/**
	 * 操作人姓名
	 */
	private String operaterName;
	
	/**
	 * 操作时间
	 */
	private Date operaterTime;

	
	/**
	 * 创建时间
	 */
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date createdAt;
	
	/**
	 * 备注
	 */
	private String remark;

    public static LambdaQueryWrapper<StockDocumentDetail> lqw() {
		return Wrappers.lambdaQuery();
	}
}
